package org.agent.action;

import java.util.Date;

import org.agent.common.Constants;
import org.agent.common.MD5;
import org.agent.pojo.User;

public class LoginAction extends BaseAction {
	
	private User user;
	
	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user = user;
	}

	/**
	 * 登录|登陆页面
	 * @return
	 */
	public String login(){
		if(user == null){
			return  INPUT;
		}
		return SUCCESS;
	}
	
	
	/**
	 * 异步登录前验证
	 * @return
	 */
	public String validateLoginUser(){
//		表示用户名和密码正确
		String flag="exist";
//		密码加密处理
		user.setUserPassword(MD5.MD5Encode(user.getUserPassword()));
		
		if(user != null && user.getUserCode() != ""){
			User _user=this.getUserService().getUser(user);
			
			if(_user != null){
//				用户存在  判断密码
				if(!_user.getUserPassword().equals(user.getUserPassword())){
//					密码错误
					flag="errorPwd";
				}else{
//					用户名和密码都正确  可以登录 更新状态
					_user.setLastLoginTime(new Date());
					this.getUserService().modifyUser(_user);
					
//					放入session
					this.getRequest().getSession().setAttribute(Constants.SESSION_USER, _user);
					
				}
			}else{
//				用户不存在
				flag="nonentity";
			}
		}
		this.getOut().write(flag);
		this.getOut().flush();
		this.getOut().close();
//		struts2不进行页面跳转
		return null;
	}
	
	/**
	 * 异步修改密码
	 * @return
	 */
	public String modifyPwd(){
		
//		密码加密处理
		user.setOldPassword(MD5.MD5Encode(user.getOldPassword()));//旧密码
		user.setUserPassword(MD5.MD5Encode(user.getUserPassword()));//新密码
		
		User _user=(User)this.getRequest().getSession().getAttribute(Constants.SESSION_USER);
//		输入的原密码跟登录用户密码相同时 进行修改密码
		
		
		if(user.getOldPassword().equals(_user.getUserPassword())){
			_user.setUserPassword(user.getUserPassword());
			_user.setLastUpDateTime(new Date());
			
			int i=this.getUserService().modifyUser(_user);
			if(i > 0){
//				修改密码成功
				this.getOut().write("success");
				this.getOut().flush();
				this.getOut().close();
			}
		}
		return null;
	}
	
	/**
	 * 退出用户
	 * @return
	 */
	public String exit(){
//		session.invalidate()是让当前浏览器的session销毁,也就是一个session被销毁
		this.getRequest().getSession().invalidate();
//		removeAttribute()可以指定销毁哪个session
//		this.getRequest().getSession().removeAttribute(Constants.SESSION_USER);
		return SUCCESS;
	}
}
